/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.DAO;

import br.com.documentar.interfacee.InterfaceDAO;
import br.com.documentar.model.DocumentarModel;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author Santos
 */
public class DocumentarDAO extends AbstractDAO
        implements InterfaceDAO<List<br.com.documentar.model.DocumentarModel>, br.com.documentar.model.DocumentarModel> {

    @Override
    public boolean setDados(DocumentarModel model) {
        String sql = null;
        ConnectDataBase();
        switch (model.getActionScript()) {

            case "I":
                sql = "INSERT INTO \n"
                        + "  `tdoc_documento`\n"
                        + "(\n"
                        //+ "  `TDOC_CODIGO_PK`,\n"
                        + "  `TDOC_VERSAO_FK`,\n"
                        + "  `TDOC_CATEGORIA_FK`,\n"
                        + "  `TDOC_TELA_FK`,\n"
                        + "  `TDOC_ABA`,\n"
                        + "  `TDOC_POSICAO`,\n"
                        + "  `TDOC_CAMPO`,\n"
                        + "  `TDOC_FUNCAO_PARAMETRO`,\n"
                        + "  `TDOC_EXEMPLO`,\n"
                        + "  `TDOC_IMAGEM_TELA`,\n"
                        + "  `TDOC_ANEXO`,\n"
                        + "  `TDOC_LINK_VIDEO`,\n"
                        + "  `TDOC_SQL_EXECUTADO`,\n"
                        + "  `TDOC_ATIVO`) \n"
                        + "VALUE (\n"
                        //+ "  " + model.getCodigo() + ",\n"
                        + "  " + model.getCategoriaVersao().getVersao().getCodigo() + ",\n"
                        + "  " + model.getCategoriaVersao().getCategoria().getCodigo() + ",\n"
                        + "  " + model.getCategoriaVersao().getTelaModel().getCodigo() + ",\n"
                        + "  '" + model.getAba() + "',\n"
                        + "  '" + model.getPosicao() + "',\n"
                        + "  '" + model.getNomeCampo() + "',\n"
                        + "  '" + model.getFuncaoParamentro() + "',\n"
                        + "  '" + model.getExemplo() + "',\n"
                        + "  '" + model.getImagemTela() + "',\n"
                        + "  '" + model.getAnexo() + "',\n"
                        + "  '" + model.getLinkVideo() + "',\n"
                        + "  '" + model.getSql() + "',\n"
                        + "  '" + model.getAtivo() + "')";
                break;
            case "U":
                sql = "UPDATE \n"
                        + "  `tdoc_documento`  \n"
                        + "SET \n"
                        + "  `TDOC_VERSAO_FK` = " + model.getCategoriaVersao().getVersao().getCodigo() + ",\n"
                        + "  `TDOC_CATEGORIA_FK` = " + model.getCategoriaVersao().getCategoria().getCodigo() + ",\n"
                        + "  `TDOC_TELA_FK` = " + model.getCategoriaVersao().getTelaModel().getCodigo() + ",\n"
                        + "  `TDOC_ABA` = '" + model.getAba() + "',\n"
                        + "  `TDOC_POSICAO` = '" + model.getPosicao() + "',\n"
                        + "  `TDOC_CAMPO` = '" + model.getNomeCampo() + "',\n"
                        + "  `TDOC_FUNCAO_PARAMETRO` = '" + model.getFuncaoParamentro() + "',\n"
                        + "  `TDOC_EXEMPLO` = '" + model.getExemplo() + "',\n"
                        + "  `TDOC_IMAGEM_TELA` = '" + model.getImagemTela() + "',\n"
                        + "  `TDOC_ANEXO` = '" + model.getAnexo() + "',\n"
                        + "  `TDOC_LINK_VIDEO` = '" + model.getLinkVideo() + "',\n"
                        + "  `TDOC_SQL_EXECUTADO` = '" + model.getSql() + "',\n"
                        + "  `TDOC_ATIVO` = '" + model.getAtivo() + "' \n"
                        + "WHERE \n"
                        + "  `TDOC_CODIGO_PK` = " + model.getCodigo() + "";
                break;
            case "D":
                sql = "DELETE FROM \n"
                        + "  `tdoc_documento` \n"
                        + "WHERE \n"
                        + "  `TDOC_CODIGO_PK` = " + model.getCodigo() + "";
                break;
        }
        return InsertUpdateDelete(sql, model.getNomeTela());
    }

    @Override
    public List<DocumentarModel> getDados(DocumentarModel model) {
        model.setResultSet(null);
        model.getListaDocumentar().clear();
        String sql = "SELECT \n"
                + "  documento.`TDOC_CODIGO_PK`,\n"
                + "  `produto`.`TPRO_CODIGO_PK`,\n"
                + "  `produto`.`TPRO_NOME`,\n"
                + "  documento.`TDOC_VERSAO_FK`,\n"
                + "  versao.`TVER_NOME`,\n"
                + "  documento.`TDOC_CATEGORIA_FK`,\n"
                + "  COALESCE(( `fnc_caminho_completo`( documento.`TDOC_CATEGORIA_FK`)), 'RAIZ') AS TCAT_NOME, \n"
                + "  documento.`TDOC_TELA_FK`,\n"
                + "  COALESCE(( `fnc_caminho_completo_tela`( documento.`TDOC_TELA_FK`)), 'RAIZ') AS CAMINHO_COMPLETO_TELA, \n"
                + "  documento.`TDOC_ABA`,\n"
                + "  documento.`TDOC_POSICAO`,\n"
                + "  documento.`TDOC_CAMPO`,\n"
                + "  documento.`TDOC_FUNCAO_PARAMETRO`,\n"
                + "  documento.`TDOC_EXEMPLO`,\n"
                + "  documento.`TDOC_IMAGEM_TELA`,\n"
                + "  documento.`TDOC_ANEXO`,\n"
                + "  documento.`TDOC_LINK_VIDEO`,\n"
                + "  documento.`TDOC_SQL_EXECUTADO`,\n"
                + "  documento.`TDOC_ATIVO`\n"
                + " FROM \n"
                + "  `tdoc_documento` documento\n"
                + " inner join `tver_versao` versao on `documento`.`TDOC_VERSAO_FK` = `versao`.`TVER_CODIGO_PK`\n"
                + " inner join `tcat_categoria` categoria on documento.`TDOC_CATEGORIA_FK` = categoria.`TCAT_CODIGO_PK`\n"
                + " inner join `tpro_produto` produto on `versao`.`TVER_PRODUTO_FK` = `produto`.`TPRO_CODIGO_PK`";
        try {
            ConnectDataBase();
            switch (model.getActionScript()) {
                case "C":
                    model.setResultSet(Select(sql, model.getNomeTela()));
                    break;
                case "P":
                    model.setResultSet(Select(sql + " WHERE documento.TDOC_CAMPO LIKE '%" + model.getNomeCampo() + "%'", model.getNomeTela()));
                    break;
                case "porProduto":
                    model.setResultSet(Select(sql + " where `versao`.`TVER_PRODUTO_FK` = " + model.getProduto().getCodigo() + "", model.getNomeTela()));
                    break;
                case "porCodigo":
                    model.setResultSet(Select(sql + " where documento.`TDOC_CODIGO_PK` = " + model.getCodigo() + "", model.getNomeTela()));
                    break;
                case "porVersaoCategoria"://preparar para remoção
                    model.setResultSet(Select(sql + " where `documento`.`TDOC_VERSAO_FK` = " + model.getCategoriaVersao().getVersao().getCodigo() + " "
                            + "and `documento`.`TDOC_CATEGORIA_FK` = " + model.getCategoriaVersao().getCategoria().getCodigo() + "", model.getNomeTela()));
                    break;
                case "porVersaoCategoriaTela":
                    model.setResultSet(Select(sql + " where `documento`.`TDOC_VERSAO_FK` = " + model.getCategoriaVersao().getVersao().getCodigo() + " "
                            + " and `documento`.`TDOC_CATEGORIA_FK` = " + model.getCategoriaVersao().getCategoria().getCodigo() + " "
                            + " and `documento`.`TDOC_TELA_FK` = " + model.getCategoriaVersao().getTelaModel().getCodigo() + " ", model.getNomeTela()));
                    break;
            }
            while (model.getResultSet().next()) {
                br.com.documentar.model.DocumentarModel p = new br.com.documentar.model.DocumentarModel();
                p.setCodigo(rs.getInt("TDOC_CODIGO_PK"));
                p.getProduto().setCodigo(rs.getInt("TPRO_CODIGO_PK"));
                p.getProduto().setNome(rs.getString("TPRO_NOME"));
                p.getCategoriaVersao().getVersao().setCodigo(rs.getInt("TDOC_VERSAO_FK"));
                p.getCategoriaVersao().getVersao().setNome(rs.getString("TVER_NOME"));

                p.getCategoriaVersao().getCategoria().setCodigo(rs.getInt("TDOC_CATEGORIA_FK"));
                p.getCategoriaVersao().getCategoria().setNome(rs.getString("TCAT_NOME"));

                p.getCategoriaVersao().getTelaModel().setCodigo(rs.getInt("TDOC_TELA_FK"));
                p.getCategoriaVersao().getTelaModel().setNome(rs.getString("CAMINHO_COMPLETO_TELA"));

                p.setAba(rs.getString("TDOC_ABA"));
                p.setPosicao(rs.getString("TDOC_POSICAO"));
                p.setNomeCampo(rs.getString("TDOC_CAMPO"));
                p.setFuncaoParamentro(rs.getString("TDOC_FUNCAO_PARAMETRO"));
                p.setExemplo(rs.getString("TDOC_EXEMPLO"));
                p.setImagemTela(rs.getString("TDOC_IMAGEM_TELA"));
                p.setAnexo(rs.getString("TDOC_ANEXO"));
                p.setLinkVideo(rs.getString("TDOC_LINK_VIDEO"));
                p.setSql(rs.getString("TDOC_SQL_EXECUTADO"));
                p.setAtivo(rs.getString("TDOC_ATIVO").charAt(0));
                model.getListaDocumentar().add(p);
            }
        } catch (SQLException ex) {
            ex.getStackTrace();
        } finally {
            Desconectar(model.getNomeTela());
        }
        return model.getListaDocumentar();
    }
}
